<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
<meta name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">

    <meta name="author" content="kissdata">


    <meta name="subtitle" content="人生笔记">


    <meta name="description" content="南邮计算机学院2021毕业生王鹏的介绍，cs软件工程专业">


    <meta name="keywords" content="wangpeng 王鹏 南邮 南京">


<title>第二次工作总结 | Go | 王鹏的小岛</title>



    <link rel="icon" href="/myIcon.ico">




    <!-- stylesheets list from _config.yml -->
    
    <link rel="stylesheet" href="/css/style.css">
    



    <!-- scripts list from _config.yml -->
    
    <script src="/js/script.js"></script>
    
    <script src="/js/tocbot.min.js"></script>
    



    
    
        <!-- MathJax配置，可通过单美元符号书写行内公式等 -->
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
    "HTML-CSS": {
        preferredFont: "TeX",
        availableFonts: ["STIX","TeX"],
        linebreaks: { automatic:true },
        EqnChunk: (MathJax.Hub.Browser.isMobile ? 10 : 50)
    },
    tex2jax: {
        inlineMath: [ ["$", "$"], ["\\(","\\)"] ],
        processEscapes: true,
        ignoreClass: "tex2jax_ignore|dno",
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
    },
    TeX: {
        equationNumbers: { autoNumber: "AMS" },
        noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } },
        Macros: { href: "{}" }
    },
    messageStyle: "none"
    });
</script>
<!-- 给MathJax元素添加has-jax class -->
<script type="text/x-mathjax-config">
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for(i=0; i < all.length; i += 1) {
            all[i].SourceElement().parentNode.className += ' has-jax';
        }
    });
</script>
<!-- 通过连接CDN加载MathJax的js代码 -->
<script type="text/javascript" async
        src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML">
</script>


    


<meta name="generator" content="Hexo 7.0.0"></head>

<body>
    <script>
        // this function is used to check current theme before page loaded.
        (() => {
            const currentTheme = window.localStorage && window.localStorage.getItem('theme') || '';
            const isDark = currentTheme === 'dark';
            const pagebody = document.getElementsByTagName('body')[0]
            if (isDark) {
                pagebody.classList.add('dark-theme');
                // mobile
                document.getElementById("mobile-toggle-theme").innerText = "· Dark"
            } else {
                pagebody.classList.remove('dark-theme');
                // mobile
                document.getElementById("mobile-toggle-theme").innerText = "· Light"
            }
        })();
    </script>

    <div class="wrapper">
        <header>
    <nav class="navbar">
        <div class="container">
            <div class="navbar-header header-logo"><a href="/">侠之大者</a></div>
            <div class="menu navbar-right">
                
                    <a class="menu-item" href="/update/mystate">Career</a>
                
                    <a class="menu-item" href="/category">Legend</a>
                
                    <a class="menu-item" href="/about">Me</a>
                
                <input id="switch_default" type="checkbox" class="switch_default">
                <label for="switch_default" class="toggleBtn"></label>
            </div>
        </div>
    </nav>

    
    <nav class="navbar-mobile" id="nav-mobile">
        <div class="container">
            <div class="navbar-header">
                <div>
                    <a href="/">侠之大者</a><a id="mobile-toggle-theme">·&nbsp;Light</a>
                </div>
                <div class="menu-toggle" onclick="mobileBtn()">&#9776; Menu</div>
            </div>
            <div class="menu" id="mobile-menu">
                
                    <a class="menu-item" href="/update/mystate">Career</a>
                
                    <a class="menu-item" href="/category">Legend</a>
                
                    <a class="menu-item" href="/about">Me</a>
                
            </div>
        </div>
    </nav>

</header>
<script>
    var mobileBtn = function f() {
        var toggleMenu = document.getElementsByClassName("menu-toggle")[0];
        var mobileMenu = document.getElementById("mobile-menu");
        if(toggleMenu.classList.contains("active")){
           toggleMenu.classList.remove("active")
            mobileMenu.classList.remove("active")
        }else{
            toggleMenu.classList.add("active")
            mobileMenu.classList.add("active")
        }
    }
</script>
            <div class="main">
                <div class="container">
    
    
        <div class="post-toc">
    <div class="tocbot-list">
    </div>
    <div class="tocbot-list-menu">
        <a class="tocbot-toc-expand" onclick="expand_toc()">Expand all</a>
        <a onclick="go_top()">Back to top</a>
        <a onclick="go_bottom()">Go to bottom</a>
    </div>
</div>

<script>
    var tocbot_timer;
    var DEPTH_MAX = 6; // 为 6 时展开所有
    var tocbot_default_config = {
        tocSelector: '.tocbot-list',
        contentSelector: '.post-content',
        headingSelector: 'h1, h2, h3, h4, h5',
        orderedList: false,
        scrollSmooth: true,
        onClick: extend_click,
    };

    function extend_click() {
        clearTimeout(tocbot_timer);
        tocbot_timer = setTimeout(function() {
            tocbot.refresh(obj_merge(tocbot_default_config, {
                hasInnerContainers: true
            }));
        }, 420); // 这个值是由 tocbot 源码里定义的 scrollSmoothDuration 得来的
    }

    document.ready(function() {
        tocbot.init(obj_merge(tocbot_default_config, {
            collapseDepth: 1
        }));
    });

    function expand_toc() {
        var b = document.querySelector('.tocbot-toc-expand');
        var expanded = b.getAttribute('data-expanded');
        expanded ? b.removeAttribute('data-expanded') : b.setAttribute('data-expanded', true);
        tocbot.refresh(obj_merge(tocbot_default_config, {
            collapseDepth: expanded ? 1 : DEPTH_MAX
        }));
        b.innerText = expanded ? 'Expand all' : 'Collapse all';
    }

    function go_top() {
        window.scrollTo(0, 0);
    }

    function go_bottom() {
        window.scrollTo(0, document.body.scrollHeight);
    }

    function obj_merge(target, source) {
        for (var item in source) {
            if (source.hasOwnProperty(item)) {
                target[item] = source[item];
            }
        }
        return target;
    }
</script>
    

    
    <article class="post-wrap">
        <header class="post-header">
            <h1 class="post-title">第二次工作总结 | Go</h1>
            
                <div class="post-meta">
                    
                        Author: <a itemprop="author" rel="author" href="/">kissdata</a>
                    

                    
                        <span class="post-time">
                        Date: <a href="#">Nov 22, 2023&nbsp;&nbsp;16:07</a>
                        </span>
                    
                    
                </div>
            
        </header>

        <div class="post-content">
            <p>【工作时间】2022-04-06 ~ 2022-09-30</p>
<p>【工作方向】大数据方面工作，主要开发后台模块。</p>
<p>兼顾其他内容，不限于：名词调研、部署软件、查找bug、模板维护。</p>
<p>【工作方法】VS Code开发代码，先提交 Git &#x2F; SVN，再在 Linux 上拉取编译安装。</p>
<blockquote>
<p>看别人的实习总结，从通勤到同事，从技术到食堂一应俱全，恨不得复刻自己的一举一动。我也想这么写，但又觉得没必要全塞一起，那样会看不到重点。所以，这里按月记录了工作期间的学习内容，<code>记录如何入门互联网行业的。</code></p>
</blockquote>
<h2 id="一、试用期回顾"><a href="#一、试用期回顾" class="headerlink" title="一、试用期回顾"></a>一、试用期回顾</h2><h3 id="4-6月"><a href="#4-6月" class="headerlink" title="4 - 6月"></a>4 - 6月</h3><p>4月上半月，熟悉了工作需要的基础，写写文档，包括Git操作、MySQL。主要是完全不懂，也不好安排其他任务，于是又分析公司自己的一个go安装程序（它能够编译、下载、安装、发布其他的程序），找bug。L哥感觉我的水平没有进展，于是让开发一个HTTP服务当作hello world，并以此作为第一个月的考核，后面几天一直在写，直到公司搬家。</p>
<p>4月下半月，公司搬家，在新地方学习使用 Go包( <code>Gin</code> + <code>Gorm</code> ) 重写 http服务。</p>
<p>5月上半月，对一个看的安装驱动模块做更新，花了好几天细看各个函数的流程，以图找到优化，使逻辑更清晰，最终无果。一直到公司接到新项目。</p>
<p>5月下半月，恰巧其他公司开发的OS交付，用了接近两周的时候，去对其中部分模块进行测试（我主要测数据中枢和物联网接入平台，确保按钮和功能没大问题），也第一次使用能管理多人测试的工具 <code>禅道</code>。之后公司的边缘计算方面的项目启动，研发人员都在做设计，我做一些辅助性的工作。顺带了解物联网、联邦学习、图像识别等基础常识。（其实就是搜搜各种细分行业的名词、写写介绍）</p>
<p>6月上半月，与测试人员一起部署和测试独立版的视频会议，这是4楼刚开发出来的一个java项目。借此，顺带<strong>了解了 redis、postgres等数据库的安装</strong>和使用，也<strong>熟悉了项目的配置过程</strong>。</p>
<p>此时陆陆续续来了不少新人，帮助他们安装git、centos环境，自己也跟着熟练。让linux连上外网，xshell登录mysql8 这两个方面比较麻烦，花了不少功夫。</p>
<p>6月下旬，修改pg加密的脚本完成。开始开发一个符合mqtt协议的模拟器，能够发布温度并根据接受到的指令调节温度，借此学习了mqtt协议基础。</p>
<p>6月的最后几天调研操作wsi的开源库，想找到转换图片格式的功能（当时没有找到，由于水平，连安装python环境也未成功）。</p>
<p>开发完http服务时，还以为自己以后就跟Web api打交道了（当时其他人说，L哥让你调研什么，以后就让你开发和维护什么），现在才知道这是人人都会的基础，回想真是好笑。</p>
<h3 id="7-9月"><a href="#7-9月" class="headerlink" title="7 - 9月"></a>7 - 9月</h3><p>7月份前两周，主要开发和升级dby抽帧小程序。首先调研 goCV 的安装和使用，知道了运行goCV需要openCV4环境，又学了goCV在centos的安装。编写算法模块后把它发送到生产环境编译，学习修改 dockerfile、makefile（知道了docker内不加参数连不上外网）。接着联调测试，需要把输出的图片数据发送到 rabbitMQ，这里花费了不少时间（都是我没有自测得好导致的）。多余几天尝试升级程序，能够支持多线程，调用context包增加控制，未果。</p>
<p>7月后两周，主要在写详设文档和尝试开发读取病例图像的程序。写文档期间，查询了空间数据库、Modbus协议等资料，也熟悉了visio的使用；对于开发读取病例图像，之前调研知道要借助openslide库，知道它提供了各个语言的接口，主流是python，不过考虑到是go模块，最终选择了在libvips，因为有基于它的 <code>govips</code> 包，后续如果需要新功能可以修改。通过直接调用bash 命令的方式完成任务。</p>
<blockquote>
<p>8月份，本来一开始想让我做流媒体开发，但我对相关概念全无，作罢。后来每周任务都是破解一个exe软件，结果都是忙于其他事项，而且还要重学汇编，没有进展。</p>
</blockquote>
<p>8月上半月，学习反汇编工具IDA的使用。期间开发一个Go版本的抽帧算法模块。</p>
<p>8月下半月，开始算法联调，抽帧配合检测、提取、汇聚等其他算法。</p>
<p>9月上半月（主要是上旬，后面放中秋了）。开始辅助模块开发，从设计文档开始，设计完成后写代码，L哥看了感觉逻辑混乱，列了代码文件结构让我重新开发。</p>
<p>9月下半月，继续开发级联模块，期间参与搭建短视频项目，制作实例。更新PE抽帧，尝试解决在线流读取Bug。</p>
<p>最后两天未有进度和产出，只是同步了程序里的表结构体。遂离职。</p>
<h2 id="二、偷师学艺"><a href="#二、偷师学艺" class="headerlink" title="二、偷师学艺"></a>二、偷师学艺</h2><p>开发小组成员：王成、陈国H、刘岩F、田洪辉、  吴玉P、刘习、侯玉P</p>
<p>原先就是胡王陈刘四人组，都是大佬。因为他们太厉害了，或者说现在的应届生太菜了，导致和新人之间出现了“断层”，这倒学到不少东西。虽然老员工其实待在这里也两年不到（刘原来在中兴来）。</p>
<h3 id="1-王C"><a href="#1-王C" class="headerlink" title="1 王C"></a>1 王C</h3><p>第一次有印象是在写文档的时候，当时我在公司wiki写了模块输出helloworld的教程，L哥又让在里面 <strong>添加 浮动目录</strong> ，我找不到，他截图给我，是在一个宏选项里。</p>
<p>再一次是在厕所里，他来问我，当初L哥面试我问的什么题目。我大概明白了，他想以我为标志，只要招的人比我厉害就算完成任务了，好狡猾。</p>
<h3 id="2-陈国H"><a href="#2-陈国H" class="headerlink" title="2 陈国H"></a>2 陈国H</h3><p>比较偏冷，他是第一个打心底认定我是零基础的人。那天我想启动k8s，他说至少4个G，质问我为什么虚机都是2G。我答得文不对题，他气的直挠头。再后来有一次，我喊他“华华”，他很生气。后来关系就不冷不淡的，吴玉P经常挖苦我，“为什么陈~总是对你一副死m脸。”。</p>
<p>三四次代码评审，学到不少。</p>
<ol>
<li><p>代码评审时对指出的问题，在旁边写 <code>TODO:</code></p>
</li>
<li><p>知识是看不完的，要先把它demo运行起来。</p>
</li>
<li><p>查找log中的错误，不是去 vim打开log文件慢慢下翻（使用tailf也可以），而是通过抓取日志中错误行的 error字符串。</p>
<p><code>more xxx.log | grep error</code></p>
</li>
<li></li>
</ol>
<h3 id="3-田洪H"><a href="#3-田洪H" class="headerlink" title="3 田洪H"></a>3 田洪H</h3><p>H哥是在我后面来的应届生，只比我小1岁，估计在校经历也非凡。我对他印象就是学得快，记忆力强。王C经常拿他反讽我，“问为什么他会你不会？”。我甘拜下风。</p>
<ol>
<li>JSON文件不能写注释</li>
<li>接口反射</li>
<li>docker进入容器中查看程序启动没有</li>
<li></li>
</ol>
<h3 id="4-F哥"><a href="#4-F哥" class="headerlink" title="4 F哥"></a>4 F哥</h3><p>刘岩F原来是在中兴，他每天来的最早。感觉他年龄最大，南理工的硕士。</p>
<h3 id="5-L哥"><a href="#5-L哥" class="headerlink" title="5 L哥"></a>5 L哥</h3><p>师傅。技术负责人。</p>
<ol>
<li>查看进程</li>
<li>查看目录大小</li>
<li>vim</li>
<li>…</li>
</ol>
<p>最后一天晚上，和L哥说，在这里学的很多知识好像是“一次性”的。比如pulsar，用完就不用了。想回去好好复习。他建议我，每天8小时用在工作上，晚上其他时间好好看书。我感觉不行，一旦下午有事情（比如部署）没有弄完，晚上很难分心。</p>
<h3 id="附-离职信"><a href="#附-离职信" class="headerlink" title="附 离职信"></a>附 离职信</h3><p><a target="_blank" rel="noopener" href="https://ae85.gitee.io/backup/intention/resign2022.pdf">辞职信</a></p>

        </div>

        
            <section class="post-copyright">
                
                
                
                
                     <p class="copyright-item">
                         <span>Slogan:</span>
                         <span>人生三大错觉：我躲得过去，我能反杀，是不是<strong>喜欢我?</strong></span>
                     </p>
                

            </section>
        
        <section class="post-tags">
            <div>
            </div>
            <div>
                <a href="javascript:window.history.back();">back</a>
                <span>· </span>
                <a href="/">home</a>
            </div>
        </section>
        <section class="post-nav">
            
                <a class="prev" rel="prev" href="/2023/12-8/work_ubuntu/">🆗 搭建工作用的 Ubuntu</a>
            
            
            <a class="next" rel="next" href="/2023/11-22/review_vcpp/">第一次工作总结 | VC++</a>
            
        </section>


    </article>
</div>

            </div>
            <footer id="footer" class="footer">
    <div class="copyright">
        <span>187-9597-5517 &nbsp; 王鹏 @ <a href="https://cs.njupt.edu.cn/" target="_blank">njupt</a</span>
    </div>
</footer>

    </div>
</body>

</html>